package design_pattern.builder.demo02;

/**
 * Created by cyd on 2022-06-15 14:44:44
 *
 * @Description :具体的手机类，属于ConcreteBuilder
 *
 * 作为客户端，我们只需要建造继承Phone类（产品类），并实现Builder的类的装配方法即可
 *
 * 我们在这里定义详细一些属性的装配方法，用来构建特殊的产品
 * 这个具体的手机类，可以没有属性，只是单纯用来给Phone装配属性
 */
public class IPhone extends Phone implements Builder {

    @Override
    public void buildType() {
        System.out.println("生产原型");
        this.setName("iphone");
        this.setDesc("很贵");
        this.setTypeName("iphone6");
    }

    @Override
    public void installSoft() {
        System.out.println("安装软件");
        this.setSoftware("ios");
    }

    @Override
    public void testPhone() {
        System.out.println("测试手机");
        this.setTestResult("ok");
    }

    /**
     * @return 我们返回的实际上是MiPhone，但是我们当它是一个phone用
     */
    @Override
    public Phone build() {
        System.out.println("生产手机");
        return this;
    }

}
